package com.cy.pj.common.web;

import com.cy.pj.common.pojo.JsonResult;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.ShiroException;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authz.AuthorizationException;
import org.aspectj.apache.bcel.classfile.Unknown;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
   public JsonResult doHandleShiroException(ShiroException e){
       JsonResult r=new JsonResult();
       r.setState(0);
       if(e instanceof UnknownAccountException) {
           r.setMessage("账户不存在");
       }else if(e instanceof LockedAccountException) {
           r.setMessage("账户已被禁用");
       }else if(e instanceof IncorrectCredentialsException) {
           r.setMessage("密码不正确");
       }else if(e instanceof AuthorizationException) {
           r.setMessage("没有此操作权限");
       }else {
           r.setMessage("系统维护中");
       }
       e.printStackTrace();
       return r;

   }

    @ExceptionHandler(RuntimeException.class)
    public JsonResult doHandleRuntimeException(RuntimeException e){
        log.error("exception {}",e.getMessage());
        e.printStackTrace();
        return new JsonResult(e);
    }
}
